home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / AMICUS / AMICUS09.ADF / AmigaBasicProgs / FlightSim (.txt) < prev    next >
AmigaBASIC Source Code  |  1986-05-22  |  3KB  |  146 lines

  1.  
  2. CLS
  3.  
  4. PRINT "This is a simple flight simulator written in AmigaBasic."
  5. PRINT "It uses the joystick in port 2 to control the plane."
  6. PRINT "The joystick button increases the throttle, and the 'g'"
  7. PRINT "key on the keyboard raises or lowers the landing gear."
  8. PRINT "Press any key to start"
  9.  
  10. WHILE INKEY$ = "" 
  11. WEND
  12.  
  13.  
  14. ON TIMER(1) GOSUB Inst
  15. TIMER ON
  16. rpt=0
  17. ld=INT(RND*360)
  18. GOTO Loop
  19.  
  20. Display:
  21.   ev=INT(elev/10)
  22.   GOSUB Roll
  23.   clock=clock+1
  24.   LOCATE 1,1:PRINT x$
  25.   RETURN
  26.  
  27. Roll: ' With Pitch and ground
  28.   r=INT(wa*10+50)
  29.   p=ev*2
  30.   IF ((98-r)+p)<=0 OR r+p<=0 THEN RETURN
  31.   COLOR 3
  32.   AREA (25,(98-r)+p):AREA (600,r+p):AREA (600,98):AREA (25,98): AREAFILL
  33.   COLOR 0
  34.   AREA (25,(98-r)+p):AREA (600,r+p):AREA (600,2): AREA (25,2): AREAFILL
  35.   RETURN
  36.   
  37.   
  38. Inst:
  39.   COLOR 3
  40.   LOCATE 15,5:PRINT ang,INT(airspd),INT(alt),INT(fuel),ld,elev;
  41.   LOCATE 17,11:PRINT INT((clock)/10);:LOCATE 17,35
  42.   IF uflag=1 THEN PRINT "DOWN" :ELSE PRINT "UP  "
  43.   RETURN
  44.  
  45. Stickinp:
  46.   IF STRIG(3)=-1 THEN airspd=airspd+3
  47.   horiz=STICK(2)
  48.   vert=STICK(3)
  49.   RETURN    
  50.  
  51. Loop:
  52.   CLS
  53.   COLOR 1
  54.   LINE (23,100)-(602,0),,b
  55.   LOCATE 14,5: PRINT"Heading","Airspeed","Altitude","Fuel","Dest","Elev","Time"
  56.   LOCATE 17,5: PRINT "Clock:": LOCATE 17,22: PRINT "Landing Gear "
  57.   GOSUB Init
  58.   SAY TRANSLATE$("Get ready for take off")
  59. Main:  
  60.   IF crash=0 THEN
  61.     IF wa>0 THEN wa=wa-0.2
  62.     IF wa<0 THEN wa=wa+0.2
  63.     IF ang<0 THEN ang=ang+360
  64.     IF ang>360 THEN ang=ang-360
  65.   END IF
  66.   GOSUB Display
  67.   IF crash=1 THEN COLOR 1:END
  68.   SOUND 110+airspd/10,2
  69.   SOUND 120+airspd/10,2
  70.   IF land=1 AND uflag=1 THEN CLS:PRINT "Good landing, sir!":END
  71.   IF land=1 AND uflag=0 THEN PRINT"Your wheels were UP":GOSUB Crunch:GOTO Main
  72.   t=airspd : stall=0
  73. In:
  74.   x$=INKEY$
  75.   IF takeoff=1 THEN elev=INT(elev+RND*2-RND*2)
  76.   GOSUB Stickinp
  77.   IF airspd<3 THEN GOTO Airspeed
  78.   IF vert=1 THEN elev=elev+4:eflag=4:IF elev>90 THEN stall=1
  79.   IF vert=-1 THEN elev=elev-4:eflag=-4:IF elev<-90 THEN stall=-1
  80.   IF stall=1 THEN
  81.      SOUND 1000,10                                       
  82.      airspd=airspd/4
  83.   END IF
  84.   IF stall=-1 THEN
  85.      SOUND 500,10
  86.      alt=4*alt/5
  87.   END IF
  88.   IF alt<1 THEN GOTO Airspeed
  89.   GOSUB Stickinp
  90.   IF horiz=-1 THEN wa=wa-1:ang=ang-6:IF wa<-3 THEN wa=-3
  91.   IF horiz=1 THEN wa=wa+1:ang=ang+6:IF wa>3 THEN wa=3
  92.   ang=INT(ang+RND*2-RND*2)
  93. Airspeed:
  94.   IF x$="." THEN airspd=airspd+8
  95.   IF x$="," THEN airspd=airspd-7
  96.   IF x$=" " THEN airspd=0
  97.   airspd=airspd-elev/100
  98.   IF uflag=1 THEN airspd=airspd-0.5:fuel=fuel-0.1
  99.   IF airspd<0 THEN airspd=0
  100.   IF airspd>400 THEN airspd=400
  101.   IF x$="g" AND uflag=0 THEN uflag=1:GOTO Chkfuel:
  102.   IF x$="g" AND uflag=1 THEN uflag=0
  103. Chkfuel:
  104.   fuel=fuel-(ABS(t-airspd)/100)-0.1
  105.   IF fuel<1 THEN GOSUB Crunch
  106.   IF takeoff=1 THEN GOTO Notoff
  107.   IF elev>10 AND airspd>45 AND uflag=1 THEN takeoff=1
  108.   IF takeoff=0 THEN alt=0:GOTO Chkalt
  109. Notoff:
  110.   IF land=0 AND airspd<30 THEN elev=elev-5
  111.   alt=alt+INT(((elev+0.1)*airspd)+eflag*airspd/1000)/40
  112.   IF alt<300 AND takeoff=1 THEN alt=alt+airspd/30+elev
  113. Chkalt:  
  114.   IF alt<0 THEN GOSUB Crunch
  115.   IF (alt>15 AND airspd>20) OR takeoff=0 THEN GOTO Main
  116.   IF ABS(ang-ld)<13 OR ABS(ang+360-ld)<13 THEN land=1:GOTO Main
  117.   GOTO Main
  118.   
  119. Init:
  120.   uflag=1 ' landing gear up or down
  121.   eflag=1
  122.   ang=0
  123.   takeoff=0
  124.   land=0
  125.   airspd=0
  126.   alt=0    ' altitude
  127.   elev=0
  128.   wa=0
  129.   fuel=750
  130.   crash=0
  131.   clock=0
  132.   x$=""
  133.   RETURN
  134.   
  135. Crunch:
  136.   crash=1
  137.   alt=0
  138.   col=3
  139.   GOSUB Inst
  140.   SAY TRANSLATE$("Sorry, you crashed")
  141.   COLOR 1
  142.   RETURN
  143.   
  144.  
  145.  
  146.